home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 22 / PC Actual CD 22.iso / progs / Netobj / CDK / NetObjectsFusionCDK5_97.exe / _SETUP.1 / FormHandlerComp.nfx (.txt) < prev    next >
Encoding:
Java Class File  |  1997-04-30  |  6.3 KB  |  321 lines

  1. public class FormHandlerComp extends ComponentApp {
  2.    DAssetManager cam;
  3.    DDrawFormButton cdp;
  4.    int ImageID;
  5.    int perlScriptID;
  6.    String SubmitName;
  7.    int SuccessURL;
  8.    int ErrorURL;
  9.    String outputFile;
  10.    String UnixWindows;
  11.    String PerlPath;
  12.    String storageDir;
  13.    String codeBase;
  14.    static final int MAXASSET = 50;
  15.    boolean published;
  16.    boolean[] reqField;
  17.    int reqFieldCount;
  18.    int[] assetControl;
  19.    int assetCount;
  20.    int tAssetCount;
  21.    int actionCGIAsset;
  22.  
  23.    public String PropertyListener(String var1, String var2, int var3, int var4, IDInspector var5) {
  24.       if (var3 == 1) {
  25.          if (var1.compareTo("Button Name") == 0) {
  26.             return this.SubmitName;
  27.          }
  28.  
  29.          if (var1.compareTo("Success URL") == 0) {
  30.             return Integer.toString(this.SuccessURL);
  31.          }
  32.  
  33.          if (var1.compareTo("Error URL") == 0) {
  34.             return Integer.toString(this.ErrorURL);
  35.          }
  36.  
  37.          if (var1.compareTo("Output File") == 0) {
  38.             return this.outputFile;
  39.          }
  40.  
  41.          if (var1.compareTo("Publish to") == 0) {
  42.             if (this.UnixWindows.compareTo("Windows") == 0) {
  43.                return "0";
  44.             }
  45.  
  46.             if (this.UnixWindows.compareTo("Unix") == 0) {
  47.                return "1";
  48.             }
  49.  
  50.             if (this.UnixWindows.compareTo("Mac") == 0) {
  51.                return "2";
  52.             }
  53.          } else if (var1.compareTo("Perl Path for Unix") == 0) {
  54.             return this.PerlPath;
  55.          }
  56.  
  57.          for(int var6 = 0; var6 < this.countElement(); ++var6) {
  58.             if (var1.compareTo(this.getFieldName(var6)) == 0) {
  59.                if (!this.reqField[var6]) {
  60.                   return "1";
  61.                }
  62.  
  63.                return "0";
  64.             }
  65.          }
  66.       } else {
  67.          if (var1.compareTo("Button Name") == 0) {
  68.             this.SubmitName = var2;
  69.             this.cdp.setText(this.SubmitName);
  70.          } else if (var1.compareTo("Success URL") == 0) {
  71.             this.SuccessURL = Integer.parseInt(var2, 10);
  72.          } else if (var1.compareTo("Error URL") == 0) {
  73.             this.ErrorURL = Integer.parseInt(var2, 10);
  74.          } else if (var1.compareTo("Output File") == 0) {
  75.             this.outputFile = var2;
  76.          } else if (var1.compareTo("Publish to") == 0) {
  77.             if (var2.compareTo("0") == 0) {
  78.                this.UnixWindows = "Windows";
  79.             } else if (var2.compareTo("1") == 0) {
  80.                this.UnixWindows = "Unix";
  81.             } else {
  82.                this.UnixWindows = "Mac";
  83.             }
  84.          } else if (var1.compareTo("Perl Path for Unix") == 0) {
  85.             this.PerlPath = var2;
  86.          }
  87.  
  88.          for(int var8 = 0; var8 < this.countElement(); ++var8) {
  89.             if (var1.compareTo(this.getFieldName(var8)) == 0) {
  90.                if (var2.compareTo("0") == 0) {
  91.                   this.reqField[var8] = true;
  92.                } else {
  93.                   this.reqField[var8] = false;
  94.                }
  95.             }
  96.          }
  97.       }
  98.  
  99.       return "";
  100.    }
  101.  
  102.    int max(int var1, int var2) {
  103.       return var1 > var2 ? var1 : var2;
  104.    }
  105.  
  106.    public void onCopy() {
  107.       this.SubmitName = new String(this.SubmitName);
  108.       this.outputFile = new String(this.outputFile);
  109.       this.PerlPath = new String(this.PerlPath);
  110.       this.storageDir = new String(this.storageDir);
  111.       this.codeBase = new String(this.codeBase);
  112.       boolean[] var1 = new boolean[this.reqFieldCount];
  113.  
  114.       for(int var2 = 0; var2 < this.reqFieldCount; ++var2) {
  115.          var1[var2] = this.reqField[var2];
  116.       }
  117.  
  118.       this.reqField = var1;
  119.  
  120.       for(this.tAssetCount = 0; this.tAssetCount < this.assetCount; ++this.tAssetCount) {
  121.          this.cam.CopyAsset(this.assetControl[this.tAssetCount]);
  122.       }
  123.  
  124.    }
  125.  
  126.    String cleanPath(String var1) {
  127.       String var2 = new String(var1);
  128.       String var3 = new String(var1);
  129.       String var4 = new String(var1);
  130.       var1.length();
  131.       if (var2.substring(0, 3).compareTo("../") == 0) {
  132.          var1 = "../" + var1;
  133.       } else if (var3.substring(0, 7).compareTo("../html") == 0) {
  134.          var1 = "../" + var1;
  135.       } else if (var4.substring(0, 2).compareTo("./") == 0) {
  136.          var1 = "../." + var1;
  137.       }
  138.  
  139.       return var1;
  140.    }
  141.  
  142.    int countElement() {
  143.       IDLayout var1 = this.cdp.getLayout();
  144.       int var2 = 1;
  145.       int var4 = 0;
  146.  
  147.       while(true) {
  148.          String var5 = new String() + var2;
  149.          if (!var1.IsElementName(var5)) {
  150.             --var2;
  151.             if (this.reqField == null) {
  152.                this.reqField = new boolean[var2];
  153.  
  154.                for(int var9 = 0; var9 < var2; ++var9) {
  155.                   this.reqField[var9] = false;
  156.                }
  157.  
  158.                this.reqFieldCount = var2;
  159.                return var2;
  160.             } else {
  161.                int var10 = this.min(this.reqFieldCount, var2);
  162.                boolean[] var3 = this.reqField;
  163.                this.reqField = new boolean[var2];
  164.  
  165.                for(var4 = 0; var4 < var10; ++var4) {
  166.                   this.reqField[var4] = var3[var4];
  167.                }
  168.  
  169.                if (this.reqFieldCount != this.max(this.reqFieldCount, var2)) {
  170.                   while(var4 < this.max(this.reqFieldCount, var2)) {
  171.                      this.reqField[var4] = false;
  172.                      ++var4;
  173.                   }
  174.                }
  175.  
  176.                this.reqFieldCount = var2;
  177.                return var2;
  178.             }
  179.          }
  180.  
  181.          ++var2;
  182.       }
  183.    }
  184.  
  185.    String getFieldName(int var1) {
  186.       int var2 = var1 + 1;
  187.       return "Required field " + var2;
  188.    }
  189.  
  190.    public String onInstall(DAssetManager var1, String var2) {
  191.       this.cam = var1;
  192.       this.codeBase = var2;
  193.       return "Form Handler";
  194.    }
  195.  
  196.    protected void finalize() {
  197.       if (this.published) {
  198.          for(this.tAssetCount = 0; this.tAssetCount < this.assetCount; ++this.tAssetCount) {
  199.             this.cam.RemoveAsset(this.assetControl[this.tAssetCount]);
  200.          }
  201.       }
  202.  
  203.    }
  204.  
  205.    public void onPublish(DAssetManager var1, int var2) {
  206.       IDLayout var3 = this.cdp.getLayout();
  207.       this.countElement();
  208.       DFile var4 = new DFile();
  209.       DFile var5 = new DFile();
  210.       DFile var6 = new DFile();
  211.       String var7 = this.codeBase;
  212.       String var8 = var6.GetPathChar();
  213.       new DMessageBox();
  214.       if (this.published) {
  215.          for(this.tAssetCount = 0; this.tAssetCount < this.assetCount; ++this.tAssetCount) {
  216.             this.cam.RemoveAsset(this.assetControl[this.tAssetCount]);
  217.          }
  218.       }
  219.  
  220.       this.assetCount = 0;
  221.       this.published = true;
  222.       this.cdp.setHTMLBefore(this.getHiddenInsert(var2));
  223.       if (this.UnixWindows.compareTo("Windows") == 0) {
  224.          this.actionCGIAsset = this.cam.AddAsset(var7 + "Forms" + var8 + "cgi-bin-NT" + var8 + "Forms-Handler.cgi", "CGI\u0000", "assets" + var8 + "cgi-bin");
  225.          this.assetControl[this.assetCount] = this.actionCGIAsset;
  226.          this.cam.SetPublishAssetMode(this.assetControl[this.assetCount++], 453);
  227.          this.assetControl[this.assetCount] = this.cam.AddAsset(var7 + "Forms" + var8 + "cgi-bin-NT" + var8 + "Buf.dll", "CGI\u0000", "assets" + var8 + "cgi-bin");
  228.          this.cam.SetPublishAssetMode(this.assetControl[this.assetCount++], 453);
  229.       }
  230.  
  231.       if (this.UnixWindows.compareTo("Mac") == 0) {
  232.          this.actionCGIAsset = this.cam.AddAsset(var7 + "Forms" + var8 + "cgi-bin-mac" + var8 + "Forms-Handler.cgi", "CGI\u0000", "assets" + var8 + "cgi-bin");
  233.          this.assetControl[this.assetCount] = this.actionCGIAsset;
  234.          this.cam.SetPublishAssetMode(this.assetControl[this.assetCount++], 453);
  235.          this.assetControl[this.assetCount] = this.cam.AddAsset("assets" + var8 + "webdata" + var8 + "", "SubDir\u0000", "");
  236.          this.cam.SetPublishAssetMode(this.assetControl[this.assetCount++], 451);
  237.       } else {
  238.          this.assetControl[this.assetCount] = this.cam.AddAsset("assets" + var8 + "webdata" + var8 + "", "SubDir\u0000", "");
  239.          this.cam.SetPublishAssetMode(this.assetControl[this.assetCount++], 451);
  240.          var5.Open(var7 + "Forms" + var8 + "cgi-bin-Unix" + var8 + "Forms-Handler.cgi", 0);
  241.          var4.Open(var7 + "Forms" + var8 + "cgi-bin" + var8 + "Forms-Handler.cgi", 4097);
  242.          var4.WriteString("#!" + this.PerlPath + "\n", -1);
  243.          var4.WriteString("$STORAGEDIR=\"" + this.storageDir + "\";", -1);
  244.          var4.WriteString(var5.ReadString(10000), -1);
  245.          var4.Close();
  246.          var5.Close();
  247.          this.actionCGIAsset = this.cam.AddAsset(var7 + "Forms" + var8 + "cgi-bin" + var8 + "Forms-Handler.cgi", "CGI\u0000", "assets" + var8 + "cgi-bin");
  248.          this.assetControl[this.assetCount] = this.actionCGIAsset;
  249.          this.cam.SetPublishAssetMode(this.assetControl[this.assetCount++], 453);
  250.       }
  251.  
  252.       String var9 = this.cam.GetAssetRelativeLocation(this.actionCGIAsset, var2, 0);
  253.       var3.setFormAction(var9);
  254.    }
  255.  
  256.    public void onDrop(IDLayout var1, IDRect var2, int var3) {
  257.       if (var3 == 1) {
  258.          this.assetControl = new int[50];
  259.          int var4 = 0;
  260.  
  261.          do {
  262.             this.assetControl[var4] = 0;
  263.             ++var4;
  264.          } while(var4 < 50);
  265.  
  266.          new DFile();
  267.          this.SubmitName = "Submit";
  268.          this.outputFile = "webinfo";
  269.          this.UnixWindows = "Windows";
  270.          this.PerlPath = "/usr/local/bin/perl";
  271.          this.storageDir = "../webdata/";
  272.          this.cdp = new DDrawFormButton();
  273.          this.cdp.setText(this.SubmitName);
  274.          var1.AddObject(this.cdp);
  275.          this.cdp.SetPositionRect(var2.getLeft(), var2.getTop(), var2.getRight(), var2.getBottom());
  276.       }
  277.    }
  278.  
  279.    int min(int var1, int var2) {
  280.       return var1 < var2 ? var1 : var2;
  281.    }
  282.  
  283.    public void onInspect(CStringArray var1, CStringArray var2) {
  284.       var1.Set("Button Name");
  285.       var2.Set("String\u0000");
  286.       var1.Set("Success URL");
  287.       var2.Set("Link\u0000");
  288.       var1.Set("Error URL");
  289.       var2.Set("Link\u0000");
  290.       var1.Set("Output File");
  291.       var2.Set("String\u0000");
  292.       var1.Set("Publish to");
  293.       var2.Set("Set(Windows|Unix|Mac)");
  294.       var1.Set("Perl Path for Unix");
  295.       var2.Set("String\u0000");
  296.       int var3 = this.countElement();
  297.  
  298.       for(int var4 = 0; var4 < var3; ++var4) {
  299.          var1.Set(this.getFieldName(var4));
  300.          var2.Set("Set(True|False)");
  301.       }
  302.  
  303.    }
  304.  
  305.    String getHiddenInsert(int var1) {
  306.       String var2 = "<INPUT TYPE=\"HIDDEN\" NAME=\"success\" VALUE=\"" + this.cleanPath(this.cam.GetAssetLocation(this.SuccessURL, var1, 1)) + "\">\n";
  307.       var2 = var2 + "<INPUT TYPE=\"HIDDEN\" NAME=\"error\" VALUE=\"" + this.cleanPath(this.cam.GetAssetLocation(this.ErrorURL, var1, 1)) + "\">\n";
  308.       var2 = var2 + "<INPUT TYPE=\"HIDDEN\" NAME=\"fields\" VALUE=\"" + this.reqFieldCount + "\">\n";
  309.       var2 = var2 + "<INPUT TYPE=\"HIDDEN\" NAME=\"filename\" VALUE=\"" + this.outputFile + "\">\n";
  310.  
  311.       for(int var4 = 0; var4 < this.reqFieldCount; ++var4) {
  312.          if (this.reqField[var4]) {
  313.             int var3 = var4 + 1;
  314.             var2 = var2 + "<INPUT TYPE=\"HIDDEN\" NAME=\"" + var3 + "a\" VALUE=\"TRUE\">\n";
  315.          }
  316.       }
  317.  
  318.       return var2;
  319.    }
  320. }
  321.